As is often the case, a server is to deliver files to a multiplicity of clients. One of the bottlenecks to the efficient and complete transfer of large files from a server to a particular client, has to do with the bandwidth of the connection of the server to the network and the connection to each of the clients which also has a limiting bandwidth associated with it.
For instance, if a server has a relatively large file on the order of 10-100 megabytes, as is oftentimes the case, bandwidth constraints limit the simultaneous multicasting of this information to all of the clients. This means that the information must be sent to different clients at different times, meaning that only certain clients will be permitted to receive data at any given time. The problem is that the server may be unable to accommodate all clients at once. Moreover, while the server may be able to accommodate all the clients, it may not be able to make certain that a complete file will arrive by a certain due date. This means that the delivery of the information is not possible on a timely basis to all clients.
It is also a factor that not all the clients are on-line at any given time, so that attempting to send information to these clients results in wasted bandwidth.
The situation described above has become acute in view of the growth of so-called "push" technologies in which the server directly downloads to a particular client as opposed to receiving a request from a client. As a result, in the case of a single server which multicasts its data to a number of clients, the bandwidth of the server connection to the net and the bandwidth of the switch to the various clients are both limiting factors.